/*
* (c) 2005-2009 Carlos G�mez Rodr�guez, todos los derechos reservados / all rights reserved.
* Licencia en license/bsd.txt / License in license/bsd.txt
*/
/*
* Created at regulus on 08-abr-2007 11:44:59
* as file DOMUtils.java on package org.f2o.absurdum.puck.util.xml
*/
package org.f2o.absurdum.puck.util.xml;
import java.io.StringReader;
import java.io.StringWriter;
import javax.swing.JOptionPane;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.f2o.absurdum.puck.gui.PuckFrame;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
* @author carlos
*
* Created at regulus, 08-abr-2007 11:44:59
*/
public class DOMUtils
{
public static NodeList getDirectChildrenElementsByTagName ( Node n , String name )
{
ArrayNodeList theList = new ArrayNodeList();
if ( !n.hasChildNodes() ) return theList;
Node current = n.getFirstChild();
do
{
if ( current instanceof Element )
{
Element curElt = (Element) current;
if ( curElt.getTagName().equals(name) ) theList.add(curElt);
}
current = current.getNextSibling();
} while ( current != null );
return theList;
}
private static Document doc = null;
public static Document getXMLClipboard ( )
{
if ( doc == null )
{
try
{
doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
}
catch (ParserConfigurationException e)
{
e.printStackTrace();
return null;
}
}
return doc;
}
public static String nodeToString ( Node n )
{
DOMSource ds = new DOMSource(n);
StringWriter sw = new StringWriter();
StreamResult sr = new StreamResult ( sw );
try
{
Transformer t = TransformerFactory.newInstance().newTransformer();
t.setOutputProperty(OutputKeys.INDENT,"yes");
t.transform(ds,sr);
}
catch ( TransformerException te )
{
te.printStackTrace();
}
return sw.getBuffer().toString();
}
public static Node stringToNode ( String s )
{
StreamSource ss = new StreamSource(new StringReader(s));
DOMResult dr = new DOMResult();
try
{
Transformer t = TransformerFactory.newInstance().newTransformer();
t.transform(ss,dr);
}
catch ( TransformerException te )
{
te.printStackTrace();
return null;
}
return dr.getNode().getFirstChild();
}
}